#!/bin/bash
 
Help(){
        echo -e "Usage: $0 [ options ] [ <interval> [ <count> ] ]"
        echo -e "\t -a: Monitoring all processes"
        echo -e "\t -p{pid}: Specify the pid"
        echo -e "\t -k: Kill pidstat"
        }
 
Main(){
        local log="`pwd`/logs"
 
        [ ! -d ${log} ] && mkdir -p ${log}
        [ "$1" == "p" ] && options="-p $2 $3 $4" || options="$1 $2"
 
        # 输出CPU信息到logs/cpu.log
        pidstat -u ${options}   > ${log}/cpu.log        &
        # 输出内存信息到memory.log
        pidstat -r ${options}   > ${log}/memory.log     &
        # 输出磁盘读写到disk.log
        pidstat -d ${options}   > ${log}/disk.log       &
        # 上下文切换到context.log
        pidstat -w ${options}   > ${log}/context.log    &
        }
 
 
case $1 in
-a)
        Main $2 $3
        ;;
-p)
        Main p "$2" $3 $4
        ;;
-k)
        ps -ef |grep "pidstat" |grep `whoami` |grep -v grep |awk '{print $2}' |xargs kill -9
        ;;
*)
        Help
esac




意义：
同时监控CPU、内存、磁盘、上下文切换信息，输出到不同文件中
 
作用：
当某个时间段性能出现损耗，可以通过此脚本查看进程的使用情况
 
使用：
sh xxx.sh -a 1 86400          # xxx.sh表示脚本名，每1秒输出一次，共监控一天
sh xxx.sh -p 123,321 1 86400  # xxx.sh表示脚本名，-p指定单个或多个pid（多个使用逗号分隔），只监控指定的pid。每1秒输出一次，共监控一天
sh xxx.sh -k                  # 停止pidstat命令
























